L.Edit = L.Edit || {};
/**
 * @class L.Edit.CircleMarker
 * @aka Edit.Circle
 * @inherits L.Edit.SimpleShape
 */
L.Edit.CircleMarker = L.Edit.SimpleShape.extend({
    _createMoveMarker: function () {
        var center = this._shape.getLatLng();

        this._moveMarker = this._createMarker(center, this.options.moveIcon);
    },

    _createResizeMarker: function () {
        // To avoid an undefined check in L.Edit.SimpleShape.removeHooks
        this._resizeMarkers = [];
    },

    _move: function (latlng) {
        if (this._resizeMarkers.length) {
            var resizemarkerPoint = this._getResizeMarkerPoint(latlng);
            // Move the resize marker
            this._resizeMarkers[0].setLatLng(resizemarkerPoint);
        }

        // Move the circle
        this._shape.setLatLng(latlng);

        this._map.fire(L.Draw.Event.EDITMOVE, {layer: this._shape});
    },
});

L.CircleMarker.addInitHook(function () {
    if (L.Edit.CircleMarker) {
        this.editing = new L.Edit.CircleMarker(this);

        if (this.options.editable) {
            this.editing.enable();
        }
    }

    this.on('add', function () {
        if (this.editing && this.editing.enabled()) {
            this.editing.addHooks();
        }
    });

    this.on('remove', function () {
        if (this.editing && this.editing.enabled()) {
            this.editing.removeHooks();
        }
    });
});